package developer.笔试题.打印圣诞树;

public class ChristmasTree {
    public static void main(String[] args) {
        // 圣诞树的大小，可以调整这个值来改变树的高度
        int treeSize = 5;
        
        // 打印圣诞树的顶部
        printTreeTop(treeSize);
        
        // 打印圣诞树的主体部分
        printTreeBody(treeSize);
        
        // 打印圣诞树的树干
        printTreeTrunk(treeSize);
    }
    
    // 打印圣诞树顶部的星星
    private static void printTreeTop(int size) {
        // 打印星星前的空格
        for (int i = 0; i < size; i++) {
            System.out.print(" ");
        }
        // 打印星星
        System.out.println("★");
    }
    
    // 打印圣诞树的主体部分
    private static void printTreeBody(int size) {
        // 每一层的打印
        for (int level = 1; level <= size; level++) {
            // 打印每一层前面的空格
            for (int space = 0; space < size - level; space++) {
                System.out.print(" ");
            }
            
            // 打印每一层的树枝和装饰
            for (int branch = 0; branch < 2 * level - 1; branch++) {
                // 随机添加一些装饰
                if (Math.random() < 0.15) {
                    // 随机选择一种装饰
                    char[] decorations = {'●', '○', '◆', '◇'};
                    System.out.print(decorations[(int)(Math.random() * decorations.length)]);
                } else {
                    // 树枝
                    System.out.print("*");
                }
            }
            System.out.println();
        }
    }
    
    // 打印圣诞树的树干
    private static void printTreeTrunk(int size) {
        // 树干的高度
        int trunkHeight = size / 2;
        
        for (int i = 0; i < trunkHeight; i++) {
            // 树干前面的空格
            for (int j = 0; j < size - 1; j++) {
                System.out.print(" ");
            }
            // 树干
            System.out.println("| |");
        }
    }
}
